Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

248
Vistas
Deno: ¿"Los trabajadores clásicos no son compatibles"?

Quería crear un Web Worker así:

 const blob = URL.createObjectURL(new Blob([` ... `], {type: 'text/javascript'})) const worker = new Worker(blob)

Pero al hacerlo en Deno obtengo:

 error: Uncaught NotSupported: Classic workers are not supported. const worker = new Worker(blob) ^

Busqué en Google este mensaje "Los trabajadores clásicos no son compatibles" y básicamente no encontré nada que explique la historia detrás de él o qué significa específicamente. Encontré un poco sobre una forma especial de Deno de crear trabajadores:

 const worker = new Worker(new URL("worker.js", import.meta.url).href, { type: "module", deno: true, }); worker.postMessage({ filename: "./log.txt" });

pero no parece satisfacer mis necesidades porque específicamente necesito inicializar un trabajador dinámicamente desde una cadena (o al menos desde una función arbitraria pasada en tiempo de ejecución).

¿Hay alguna forma de hacer lo que necesito hacer en Deno?

Editar: logré encontrar esta página en los documentos (los documentos de Deno tienen problemas para mostrar resultados en los motores de búsqueda, por alguna razón), aunque no es un buen augurio porque parece que no hay manera de hacer lo que necesito para hacer https://deno.land/manual/runtime/web_platform_apis#web-worker-api

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Actualmente, Deno no admite trabajadores "clásicos".

  1. Desde Worker() - API web | MDN :

    type : un DOMString que especifica el tipo de trabajador que se va a crear. El valor puede ser classic o module . Si no se especifica, el valor predeterminado utilizado es classic .

  2. de los trabajadores | manuales | Deno :

    Actualmente, Deno solo admite trabajadores de tipo module ; por lo tanto, es esencial pasar el type: "module" al crear un nuevo trabajador.

Para su caso de uso, es posible que pueda usar una URL de datos . p.ej:

 new Worker( `data:text/javascript;base64,${btoa( `console.log("hello world"); self.close();` )}`, { type: "module" } );
about 4 years ago · Juan Pablo Isaza Denunciar

0

La información provista en la respuesta de mfulton26 es correcta, pero no necesita una URL de datos: simplemente necesita agregar { type: "module" } a las opciones de instanciación de su trabajador. Deno incluso admite TypeScript como fuente para su trabajador:

blob-worker.ts :

 const workerModuleSource = ` const version: string = Deno.version.deno; console.log(\`Hello from Deno v\${version}\`); self.close(); `; const blob = new Blob( [workerModuleSource], {type: 'application/typescript'}, ); const objUrl = URL.createObjectURL(blob); const worker = new Worker(objUrl, { deno: true, type: 'module', }); URL.revokeObjectURL(objUrl);
 $ deno run --unstable blob-worker.ts Hello from Deno v1.14.1
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda